package dao

import (
	"fmt"

	"github.com/jinzhu/gorm"

	"simple_oa/models"
	"simple_oa/settings"

	_ "github.com/jinzhu/gorm/dialects/mysql"
)

var (
	DB *gorm.DB
)

// InitMySQL 初始化MySQL
func InitMySQL(cfg *settings.MySQLConfig) (err error) {
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.DB)
	DB, err = gorm.Open("mysql", dsn)
	if err != nil {
		return
	}
	// 禁用默认表名的复数形式，如果置为 true，则 `User` 的默认表名是 `user`
	DB.SingularTable(true)

	return DB.DB().Ping()
}

// 执行模块迁移
func InitModelMigrate() {
	DB.AutoMigrate(
		&models.Staff{},        // 員工表
		&models.OvertimeType{}, // 加班类型表
	)
}

func Close() {
	_ = DB.Close()
}
